Electronic systems and circuits have made a significant contribution towards the advancement of modern society and are utilized in a number of applications to achieve advantageous results. Numerous electronic technologies such as digital computers, calculators, audio devices, video equipment, and telephone systems have facilitated increased productivity and reduced costs in analyzing and communicating data in most areas of business, science, education and entertainment. Frequently, advanced computer applications are needed to realize these advantageous results and these advanced applications require increasingly powerful computer devices. The demand for ever greater functionality and convenience has resulted in a need for increased performance in smaller packages. One approach to providing sufficient processing power is to utilize multiple processors. However, utilizing multiple processors often gives rise to number of problems such as inefficient memory coherency management.
Numerous electronic devices include processors that operate by executing programs comprising a series of instructions. These programs and their series of instructions, are collectively referred to as software. Software instructions include directions that guide the processor device functions and cause it to perform useful tasks. The utility a processor device provides often depends upon the speed and efficiency at which instructions included in a software program are executed.
One conventional attempt at increasing computer performance involves the implementation of multiprocessor systems. Each processor in a conventional multiprocessor system is located in a separate chip with separate memory controllers and I/O controllers. These chips are connected together by a conventional interconnect (bus, crossbar switch, or similar method) on a printed circuit board (PCB). A conventional multiprocessor system typically comprises two or more processor chips connected to one or more memory controller chips, one or more I/O control chips, and a conventional bus. The separate components are provided as separate integrated circuit dies, or chips, and mounted on and interconnected to a motherboard or PCB, for example, using standard pins and sockets, flip-chip mounting, wirebond connections, etc. Conventional multiprocessor systems overcome many of the performance limitations of the single processor systems. For example, instead of exclusively relying on clock speed increases or increasing levels of integration, performance can be increased by dividing software based applications into two or more execution threads and executing them in parallel. However, conventional multiprocessor systems have their limitations.
One problem with conventional multiprocessor systems is the cost of chip pins and the physical limitations of PCB wires limit the datapath width and clock frequency of the interconnect. These limitations decrease the system performance by increasing the memory latency for each processor and the synchronization latency between processors (e.g., in multiprocessor applications). Much of the complexity of the current generation of processors is a result of techniques for mitigating the effects of this increased latency on performance.
The implementation of multiprocessor systems within a single die, referred to in the industry as Chip Multi-Processor (CMP), solves some of the conventional multiprocessor system problems, but others remain. For example, CMP systems reduce the costs of chip pins, the physical limitations of PCB wires and interconnect clock frequencies are reduced. However, problems with respect to coordination among the multiple processors, efficient load sharing of the software application load, and efficient access to memory remain. Increasing the numbers of processors in prior art CMP systems does not linearly increase the performance of the systems due to the problems inherent in managing multiple processors to solve common problems, specifically problematic are the memory management overhead problems. Managing coherency between different cache memories is critical, if a processor is not utilizing coherent information the results are typically inconsistent and flawed.
Thus, what is required is a solution that provides the advantages of CMP systems with respect to increasing computer system performance while facilitating efficient and coherent cache memory management. The present invention provides a novel solution to the above problems.